﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using MakeIT.MiraPark.Negocios;

namespace MiraPark
{
    public partial class FormConferenciaPatio : Form
    {
        CabineVO cabineVO = null;
        UsuarioVO usuarioVO = null;

        public FormConferenciaPatio()
        {
            InitializeComponent();
        }
        public void setCabine(CabineVO cabineVO, UsuarioVO usuarioVO)
        {
            this.cabineVO = cabineVO;
            this.usuarioVO = usuarioVO;
        }


        private void FormConferenciaPatio_Load(object sender, EventArgs e)
        {

            StringBuilder mensagem = new StringBuilder();
            StringBuilder mensagem2 = new StringBuilder();

            DateTime dtRef = DateTime.Now;

            mensagem.Append(Ticket.getHeader());
            mensagem.AppendLine(dtRef.ToString());
            mensagem.AppendLine("Conferencia de Patio");
            mensagem.AppendLine("================================================");
            mensagem.AppendLine("Patio: " + cabineVO.idPatio + " - " + cabineVO.patioVO.patio);
            mensagem.AppendLine("Cabine: " + cabineVO.idCabine + " - " + cabineVO.cabine);
            mensagem.AppendLine("Operador:" + "x-xxxx");
            mensagem.AppendLine("================================================");
            mensagem.AppendLine("");

            mensagem2.AppendLine("VEICULOS NO PATIO");
            mensagem2.AppendLine("------------------------------------------------");

            List<MovimentacaoVO> listMovimentacaoVOs = ModelBO.getMovimentacoes(null, null, null, null, null, null, null, false, false, null, false, false, true, false,true);

            int entradas = 0;
            int entradasMensalistas = 0;
            int entradasCabine = 0;
            int entradasCabineMensalistas = 0;
            int saidas = 0;
            int saidasCabine = 0;
            int saidasMensalistas = 0;
            int saidasCabineMensalistas = 0;
            int saidasConvenios = 0;
            int saidasCabineConvenios = 0;
            int pagantes = 0;
            int pagantesCabine = 0;
            int naoPagantes = 0;
            int naoPagantesCabine = 0;


            foreach (MovimentacaoVO movimentacaoVO in listMovimentacaoVOs)
            {
                CabineVO cabineVOe = ModelBO.getCabine(movimentacaoVO.idCabineE);

                if (movimentacaoVO.especie.Equals(MovimentacaoVO.Especie.Mensalidade) ||
                    movimentacaoVO.especie.Equals(MovimentacaoVO.Especie.Provisao) ||
                    movimentacaoVO.especie.Equals(MovimentacaoVO.Especie.Retirada) ||
                    cabineVOe.idPatio != cabineVO.idPatio)
                    continue;

                entradas++;
                if (movimentacaoVO.idMensalista != -1)
                    entradasMensalistas++;

                if (movimentacaoVO.idCabineE == cabineVO.idCabine)
                {
                    entradasCabine++;
                    if (movimentacaoVO.idMensalista != -1)
                        entradasCabineMensalistas++;
                }

                if (movimentacaoVO.saida.Equals(new DateTime(1, 1, 1)))
                {
                    mensagem2.AppendLine("T:"+movimentacaoVO.ticket+" Pl:"+movimentacaoVO.placa.PadRight(7)+" E:"+movimentacaoVO.entrada.ToString()+(movimentacaoVO.idMensalista!=-1?"(Mens)":""));
                }
                else
                {
                    saidas++;
                    if (movimentacaoVO.idMensalista != -1)
                        saidasMensalistas++;
                    if (movimentacaoVO.idConvenio != -1)
                        saidasConvenios++;

                    if (movimentacaoVO.idCabineS == cabineVO.idCabine)
                    {
                        saidasCabine++;
                        if (movimentacaoVO.idMensalista != -1)
                            saidasCabineMensalistas++;
                        if (movimentacaoVO.idConvenio != -1)
                            saidasCabineConvenios++;

                    }

                    if (movimentacaoVO.valor > 0)
                    {
                        pagantes++;
                        if (movimentacaoVO.idCabineS == cabineVO.idCabine)
                            pagantesCabine++;
                    }
                    else
                    {
                        naoPagantes++;
                        if (movimentacaoVO.idCabineS == cabineVO.idCabine)
                            naoPagantesCabine++;
                    }
                }
            }


            mensagem.AppendLine("Situacao no Patio");
            mensagem.AppendLine("------------------------------------------------");
            mensagem.AppendLine("VEICULOS NO PATIO:       " + (entradas-saidas));
            mensagem.AppendLine("");
            mensagem.AppendLine("Entradas:                " + entradas);
            mensagem.AppendLine("Saidas:                  " + saidas);
            mensagem.AppendLine("");
            mensagem.AppendLine("Entradas de Mensalistas: " + entradasMensalistas);
            mensagem.AppendLine("Saidas Mensalistas:      " + saidasMensalistas);
            mensagem.AppendLine("MENSALISTAS NO PATIO:    " + (entradasMensalistas-saidasMensalistas));
            mensagem.AppendLine("");
            mensagem.AppendLine("Saidas Convenios:        " + saidasConvenios);
            mensagem.AppendLine("");
            mensagem.AppendLine("Pagantes:                " + pagantes);
            mensagem.AppendLine("Nao Pagantes:            " + naoPagantes);
            mensagem.AppendLine("");
 
            mensagem.AppendLine("Situacao na Cabine");
            mensagem.AppendLine("------------------------------------------------");
            mensagem.AppendLine("Entradas:                " + entradasCabine);
            mensagem.AppendLine("Saidas:                  " + saidasCabine);
            mensagem.AppendLine("");
            mensagem.AppendLine("Entradas de Mensalistas: " + entradasCabineMensalistas);
            mensagem.AppendLine("Saidas Mensalistas:      " + saidasCabineMensalistas);
            mensagem.AppendLine("");
            mensagem.AppendLine("Saidas Convenios:        " + saidasCabineConvenios);
            mensagem.AppendLine("");
            mensagem.AppendLine("Pagantes:                " + pagantesCabine);
            mensagem.AppendLine("Nao Pagantes:            " + naoPagantesCabine);
            mensagem.AppendLine("");

            mensagem.Append(mensagem2.ToString());

            mensagem.AppendLine("");
            mensagem.AppendLine("Conferido por:");

            mensagem.Append(Ticket.getFooter(false, cabineVO, usuarioVO));

            this.textBoxResult.Text = mensagem.ToString();
        }

        private void buttonFecharJanela_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            while (true)
            {
                if (!Ticket.checkPrint() || !Ticket.printTicket(this.textBoxResult.Text))
                {
                    DialogResult dr = MessageBox.Show(this, "Tentar novamente?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (dr.ToString().Equals("Yes"))
                    {
                        continue;
                    }
                    else
                    {
                        break;
                    }
                }
                else
                {
                    break;
                }
            }


        } 
    }
}
